package com.xjczjj.model.common;

import lombok.Data;


@Data
public class Result<T>{
//    private Boolean success; //编码：1成功，0和其它数字为失败

    private String msg; //错误信息

    private Integer code; // 状态码

    private T data; //数据

    /**
     * 私有化构造方法，禁止在其它类创建对象
     */
    private Result() {

    }

    /**
     * 成功执行，不返回数据
     * @param <T>
     * @return
     */
    public static<T> Result<T> ok() {
        Result<T> result = new Result<>();
        result.setCode(ResultCode.SUCCESS);
        result.setMsg("执行成功");
        return result;
    }

    /**
     * 成功执行并返回数据
     * @param data
     * @param <T>
     * @return
     */
    public static<T> Result<T> ok(T data) {
        Result<T> result = new Result<T>();
        result.setCode(ResultCode.SUCCESS);
        result.setMsg("执行成功");
        result.setData(data);
        return result;
    }
    /**
     * 失败
     * @param <T>
     * @return
     */
    public static<T> Result<T> error() {
        Result<T> result =new Result<T>();
        result.setCode(ResultCode.ERROR);
        result.setMsg("执行失败");
        return result;
    }

    /**
     * 设置状态码
     * @param code
     * @return
     */
    public Result<T> code(Integer code) {
        this.setCode(code);
        return this;
    }
    /**
     * 设置返回消息
     * @param message
     * @return
     */
    public Result<T> message(String message) {
        this.setMsg(message);
        return this;
    }

    /**
     * 是否存在
     * @param <T>
     * @return
     */
    public static<T> Result<T> exist() {
        Result<T> result = new Result<>();
        result.setCode(ResultCode.SUCCESS);
        result.setMsg("执行成功");
        return result;
    }
}
